/*!
 * \file    Affichage_Menu.h
 * \brief   Prototypes des fonctions, Déclaration des structures et des constantes
 *			pour les variables liées au menu
 *
 * \date	28/02/2012
 * \author	Franck Lenormand
 */

#ifndef AFFICHAGE_MENU_H
#define AFFICHAGE_MENU_H

#include <SDL/SDL_ttf.h> /* Gestion des polices d'écriture */
#include <SDL/SDL.h>
#include "Environnement.h" /* Import de certaine variables globales*/


/*option de retour du menu*/

/**
* \def QUITTER
* Valeur retourné par le menu si l'utilisateur choisit de quitter
*/
#define QUITTER 1

/**
* \def JOUER
* Valeur retourné par le menu si l'utilisateur choisit de jouer
*/
#define JOUER 2



/*définition des constantes pour le titre et les boutons*/

/**
* \def LARGEURBOUTON
* marge horizontale entre le texte et le bord du bouton
*/
#define LARGEURBOUTON 50

/**
* \def HAUTEURBOUTON
* marge verticale entre le texte et le bord du bouton
*/
#define HAUTEURBOUTON 5

/**
* \def LARGEURTITRE
* Largeur réservé au titre
*/
#define LARGEURTITRE 300

/**
* \def HAUTEURTITRE
* Hauteur réservé au titre
*/
#define HAUTEURTITRE 100

/**
* \struct Temporaire
* \brief Structure en élaboration
*/
typedef struct {
    SDL_Rect posfond;
    SDL_Surface * fond;
    SDL_Rect postexte;
    SDL_Surface * texte;
    Booleen afficher;
} Temporaire;

/*affiche le menu en appelant les bonnes fonctions et gère les évènements*/
Uint8 menu(SDL_Surface * ecran );

/*Initialisation des positions centrale qu'auront les éléments*/
SDL_Rect * initPosition(const Uint8 nbelement);

/*Initialisation les positions du texte (du titre et des boutons), différent de la position des boutons*/
SDL_Rect * initPositionTexte(const Uint8 nbelement, const SDL_Rect * positionelmt, const SDL_Surface * surfaceTexte);

/*Initialisation les positions des boutons, différent de la position du texte*/
SDL_Rect * initPositionBouton(const Uint8 nbelement, const SDL_Rect * positionelmt, const Uint16 large, const Uint16 haute);

/*Recherche quel bouton à été cliqué parmi plusieurs*/
Uint8  rechercheBouton(const SDL_Event evenement, const SDL_Rect * tableauposition, const Uint8 taille, const Uint16 largeur, const Uint16 hauteur);

/*Crée le texte et l'associe à l'élement surface, rassemblé dans un tableau*/
SDL_Surface * initTexteMenu(const char  menu[][2*TAILLE_MAX_TEXTE], const Uint8 nombreElement, Uint16 * largeurTexteMax,Uint16 * hauteurTexte);

/*Affiche les boutons à l'écran, si un bouton est sélectionné, il sera de couleur différente*/
void actualisationBouton(const Uint8 nbel, SDL_Rect * positionBouton, const Uint16 largeur, const Uint16 hauteur, const Uint8 p, SDL_Surface * ecran);

/*Affiche le texte à l'écran*/
void actualisationTexte(const Uint8 nbel, SDL_Rect * positonTexteMenu, SDL_Surface * surfaceTexteMenu, SDL_Surface * ecran);

/*Affiche le fond de l'écran*/
void actualisationFond (SDL_Surface * ecran);



#endif
